/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package futbol.tacticas.concursantes.aitkiar.aitutil;

import futbol.tacticas.Comando;
import futbol.tacticas.ComandoGolpearBola;
import futbol.tacticas.ComandoIrA;
import futbol.tacticas.SituacionJugadores;
import java.awt.Point;

/**
 *
 * @author aitkiar
 */
public class Portero extends Jugador
{

    public Portero( int x, int y, int fuerza, int numero )
    {
        super( x, y, fuerza, numero );
    }

    @Override
    public Comando getComando( SituacionJugadores sj )
    {
        Point bola = sj.getBola();
        Comando comando;
        if ( Utils.ultimaBola == null )
        {
            Utils.ultimaBola = new Point();
        }

        double m = (bola.getY() - Utils.ultimaBola.getY()) / (bola.getX() - Utils.ultimaBola.getX());
        double n = bola.getY() - m * bola.getX();

        posicion = sj.getMisJugadores()[numero];

        double y1 = m * x + n;

        if ( Utils.disparo( posicion, sj ) )
        {
            if ( posicion.y < 0 )
            {
                comando = new ComandoGolpearBola( numero, 0, -200 );
            }
            else
            {
                comando = new ComandoGolpearBola( numero, 0, 200 );
            }
        }
        else if ( bola.getY() <= 35 && bola.getY() >= -35 )
        {
            if ( 30 > y1 && y1 > -30 )
            {
                comando = new ComandoIrA( numero, x, y1 );
            }
            else
            {
                comando = new ComandoIrA( numero, x, bola.getY() );
            }
        }
        else
        {
            if ( bola.getY() < 75 && bola.getY() > -75 && bola.getX() < -90 &&
                campo.getJugadorMasCercanoBola() == numero )
            {
                //	LA BOLA EST� EN EL AREA
                comando = new ComandoIrA( numero, bola.getX(), bola.getY() );
            }
            else
            {
                //	LA BOLA NO EST� EN EL AREA
                if ( bola.getY() > 15 && bola.getY() < 35 )
                {
                    comando = new ComandoIrA( numero, x, 15 );
                }
                else if ( bola.getY() < -15 && bola.getY() > -35 )
                {
                    comando = new ComandoIrA( numero, x, -15 );
                }
                else if ( bola.getY() > 30 )
                {
                    comando = new ComandoIrA( numero, x, 10 );
                }
                else if ( bola.getY() < -30 )
                {
                    comando = new ComandoIrA( numero, x, -10 );
                }
                else
                {
                    comando = new ComandoIrA( numero, x, y );
                }
            }
        }

        return comando;
    }

    /** El portero no se desmarca.
     * 
     * @param sj
     * @return
     */
    public int heuristicaDesmarqueClase( SituacionJugadores sj, ZonaCampo zona )
    {
        return 0;
    }

    @Override
    public int heuristicaPaseClase( SituacionJugadores sj, ZonaCampo zona )
    {
        return 0;
    }
}
